package com.yjck.ijpay.service;

import com.yjck.ijpay.config.pay.WxPayCallback;
import com.yjck.ijpay.dto.WxPayDTO;
import com.yjck.ijpay.pojo.BaseResponse;
import com.yjck.ijpay.pojo.XhMember;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @Copyright (C), 2015-2021,鹰击长空科技服务(苏州)有限公司
 * @Author: lyz
 * @Date: 2021/3/17 14:26
 * @Description: //模块目的、功能描述
 * @History: //修改记录
 * <author> <time> <version> <desc>
 * 修改人姓名 修改时间 版本号   描述
 */
public interface IPayService {

    /**
     * @param member             用户信息
     * @param httpServletRequest 请求头
     * @param wxPayDTO           配置信息
     * @return com.xingheng.common.pojo.BaseResponse
     * @Description: 微信支付
     * @author lyz
     * @version [1.0, 2021-04-23]
     */
    BaseResponse wxPay(XhMember member, HttpServletRequest httpServletRequest, WxPayDTO wxPayDTO);


    /**
     * @param request
     * @param response
     * @return void
     * @Description: 微信回调
     * @author lyz
     * @version [1.0, 2021-04-27]
     */
    void payNotify(HttpServletRequest request, HttpServletResponse response);

    /**
     * 押金退款异步回调接口
     *
     * @param request
     * @param response
     */
    void refundNotify(HttpServletRequest request, HttpServletResponse response);


    /**
     * @return java.lang.String
     * @Description: 获取平台证书接口
     * @author lyz
     * @version [1.0, 2021-04-27]
     */
    String v3Get();

    void updateComboOrder(String orderNo, WxPayCallback wxPayCallback);

    void updateDepositOrder(String orderNo, WxPayCallback wxPayCallback);

    /**
     * @param memberId
     * @return java.lang.String
     * @Description: 退款申请
     * @author lyz
     * @version [1.0, 2021-04-27]
     */
    BaseResponse refund(Integer memberId);

    /**
     * @return void
     * @Description: 创建微信支付分订单
     * @author lyz
     * @version [1.0, 2021-05-06]
     */
    void payScore();

    /**
     * @param request
     * @param response
     * @return void
     * @Description: 创建微信支付分回调
     * @author lyz
     * @version [1.0, 2021-05-06]
     */
    void payScoreNotify(HttpServletRequest request, HttpServletResponse response);
}
